/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.client.assembler.output;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import fr.generali.accueilclient.client.om.IEmail;
import fr.generali.accueilclient.client.om.impl.Email;
import fr.generali.accueilclient.utils.constantes.TypeModeContact;
import fr.generali.refservcommuns.rce.servperscom.ctc.gestioncontacts.DtoCourriel;

/**
 * Transforme un {@link DtoCourriel} en {@link IEmail}
 * 
 * @author selrhazala
 */
@Component("dtoCourriel2EmailConverter")
public class DtoCourriel2EmailConverter implements Converter<DtoCourriel, IEmail> {

    /**
     * LOGGER
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(DtoCourriel2EmailConverter.class);

    /**
     * Prefix NPAI
     */
    private static final String PREFIX_MOTIF_NPAI = "n.p.a.i";

    /**
     * {@inheritDoc}
     */
    public IEmail convert(DtoCourriel input) {
        LOGGER.debug("assemble");
        IEmail courriel = null;

        if (input != null) {
            courriel = new Email();

            if (input.getNumOrdre() != null) {
                courriel.setNumOrdre(input.getNumOrdre());
            }

            if (input.getAdresseCourriel().startsWith(PREFIX_MOTIF_NPAI)) {
                courriel.setAdresse(input.getAdresseCourriel().substring(PREFIX_MOTIF_NPAI.length(),
                                input.getAdresseCourriel().length()));
            } else {
                courriel.setAdresse(input.getAdresseCourriel());
            }

            courriel.setPrecision(input.getPrecisionCourriel());
            courriel.setPrincipal(false);

            if (input.getCodeTypeModeContact() != null
                            && TypeModeContact.TYPE_MODE_CONTACT_PRO.getCode().equals(input.getCodeTypeModeContact())) {
                courriel.setProfessionnel(true);
            } else {
                courriel.setProfessionnel(false);
            }

            if (StringUtils.isNotBlank(input.getAdresseCourriel())
                            && input.getAdresseCourriel().startsWith(PREFIX_MOTIF_NPAI)) {

                courriel.setMotifNpai(true);
            }
        }

        return courriel;
    }
}
